import _message from '@/components/messageTip/index.js' // 引入封装的方法
import menuData from './jsonFile/menu.json'
import { parseIcons } from './iconLoader.js'
// 登录成功处理函数
export const handleLoginSuccess = proxy => {
  // 1. 显示成功提示（这里假设你有一个Vue实例上的$message方法）
  proxy.$message.success('登录成功！')

  // 2. 生成随机 Token（模拟示例，实际应由后端生成）
  const generateToken = () => {
    return (
      Math.random().toString(36).substring(2, 15) +
      Math.random().toString(36).substring(2, 15) +
      Math.random().toString(36).substring(2, 15) // 增加长度和随机性
    )
  }
  const token = generateToken()

  // 3. 计算过期时间（当前时间 + 2小时）
  const expirationTime = Date.now() + 2 * 60 * 60 * 1000 // 7200000 毫秒

  // 4. 存储到 localStorage
  const authData = {
    token: token,
    expires: expirationTime
  }
  localStorage.setItem('authData', JSON.stringify(authData))

  const activePath = localStorage.getItem('activePath')
  // 5. 跳转页面或其他后续操作
  proxy.$ToPath(activePath || '/home')
}

// 检查 Token 是否有效的工具函数
export const checkAuthToken = () => {
  const authDataStr = localStorage.getItem('authData')
  if (!authDataStr) return false

  try {
    const authData = JSON.parse(authDataStr)
    const currentTime = Date.now()
    return authData.token && authData.expires && currentTime < authData.expires
  } catch (error) {
    return false
  }
}

// 判断 Token 是否存在的工具函数
export const isTokenExist = () => {
  const authDataStr = localStorage.getItem('authData')
  if (!authDataStr) return false

  try {
    const authData = JSON.parse(authDataStr)
    // 检查是否有 token 字段，并且 token 不为空
    return !!authData.token
  } catch (error) {
    return false
  }
}

/**
 * 加载菜单数据
 * @returns {Array} 菜单数据数组
 */
export function loadMenuItems() {
  return menuData
}
export function getHomePage() {
  return menuData[0]
}
// 遍历方法并生成 Map
export function getMenuMap(menuItems) {
  const menuMap = new Map()

  // 定义递归函数
  function traverse(items, parentPath = '') {
    items.forEach(item => {
      // 构建当前菜单项的完整路径
      const fullPath = parentPath + item.path

      // 将当前菜单项添加到 Map 中
      menuMap.set(fullPath, { ...item, fullPath })

      // 如果有子菜单，递归处理
      if (item.children && item.children.length > 0) {
        traverse(item.children, fullPath) // 传递当前路径作为父路径
      }
    })
  }

  // 开始遍历
  traverse(menuItems || loadMenuItems())

  return menuMap
}
// message工具函数
export const message = _message.message

const menuItem = parseIcons(loadMenuItems())

export const getMenuItem = () => {
  return menuItem
}
